package cn.com.anypay.manager.dto.wechat;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 微信获取访问令牌API响应模型
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class WeChatTokenResponse extends WeChatApiResponse {
    
    /**
     * 访问令牌
     */
    @JsonProperty("access_token")
    private String accessToken;
    
    /**
     * 过期时间（秒）
     */
    @JsonProperty("expires_in")
    private Integer expiresIn;
    
    /**
     * 刷新令牌
     */
    @JsonProperty("refresh_token")
    private String refreshToken;
    
    /**
     * 用户OpenID
     */
    @JsonProperty("openid")
    private String openId;
    
    /**
     * 授权作用域
     */
    @JsonProperty("scope")
    private String scope;
    
    /**
     * UnionID（可选）
     */
    @JsonProperty("unionid")
    private String unionId;
    
    /**
     * 转换为WeChatAccessToken对象
     */
    public WeChatAccessToken toAccessToken() {
        WeChatAccessToken token = WeChatAccessToken.builder()
                .accessToken(accessToken)
                .expiresIn(expiresIn)
                .refreshToken(refreshToken)
                .openId(openId)
                .scope(scope)
                .unionId(unionId)
                .build();
        
        // 计算过期时间
        token.calculateExpireTime();
        
        return token;
    }
}